// Validate status 2xx 
pm.test("[POST]::/payments - Status code is 2xx", function () {
   pm.response.to.be.success;
});

// Validate if response header has matching content-type
pm.test("[POST]::/payments - Content-Type is application/json", function () {
   pm.expect(pm.response.headers.get("Content-Type")).to.include("application/json");
});

// Validate if response has JSON Body 
pm.test("[POST]::/payments - Response has JSON Body", function () {
    pm.response.to.have.jsonBody();
});

// Set response object as internal variable
let jsonData = {};
try {jsonData = pm.response.json();}catch(e){}

// pm.collectionVariables - Set payment_id as variable for jsonData.payment_id
if (jsonData?.payment_id) {
   pm.collectionVariables.set("payment_id", jsonData.payment_id);
   console.log("- use {{payment_id}} as collection variable for value",jsonData.payment_id);
} else {
   console.log('INFO - Unable to assign variable {{payment_id}}, as jsonData.payment_id is undefined.');
};

// pm.collectionVariables - Set client_secret as variable for jsonData.client_secret
if (jsonData?.client_secret) {
   pm.collectionVariables.set("client_secret", jsonData.client_secret);
   console.log("- use {{client_secret}} as collection variable for value",jsonData.client_secret);
} else {
   console.log('INFO - Unable to assign variable {{client_secret}}, as jsonData.client_secret is undefined.');
};


// Response body should have value "requires_payment_method" for "status"
if (jsonData?.status) {
pm.test("[POST]::/payments - Content check if value for 'status' matches 'requires_payment_method'", function() {
  pm.expect(jsonData.status).to.eql("requires_payment_method");
})};

// Response body should have "mandate_id"
pm.test("[POST]::/payments - Content check if 'mandate_id' exists", function() {
   pm.expect((typeof jsonData.mandate_id !== "undefined")).to.be.true;
});

// Response body should have "mandate_data"
pm.test("[POST]::/payments - Content check if 'mandate_data' exists", function() {
   pm.expect((typeof jsonData.mandate_data !== "undefined")).to.be.true;
});
